package com.hrzyit.base.utils

import android.content.Context
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.Priority
import com.bumptech.glide.load.resource.drawable.GlideDrawable
import com.bumptech.glide.request.animation.GlideAnimation
import com.bumptech.glide.request.target.SimpleTarget
import com.hrzyit.base.R
import com.hrzyit.base.common.BaseConstant

/**
 * Glide工具类-图片处理类
 */
object GlideUtils {

    /**
     * 加载资源图片-剪裁
     * @author YangWei
     * @date 2019/3/15
     * @param context       上下文对象
     * @param resourceId    图片资源id
     * @param imageView     图片容器
     */
    fun loadResourceImageForCrop(context: Context, resourceId: Int, imageView: ImageView) {
        Glide.with(context).load(resourceId).priority(Priority.HIGH)
            .centerCrop()
            .into(imageView)
    }

    /**
     * 加载资源图片-等比缩放
     * @author YangWei
     * @date 2019/3/15
     * @param context       上下文对象
     * @param resourceId    图片资源id
     * @param imageView     图片容器
     */
    fun loadResourceImageForFit(context: Context, resourceId: Int, imageView: ImageView) {
        Glide.with(context).load(resourceId).priority(Priority.HIGH)
            .fitCenter()
            .into(imageView)
    }

    /**
     * 剪裁图片
     * @author YangWei
     * @date 2019/3/15
     * @param context       上下文对象
     * @param url           图片资源 url
     * @param imageView     图片容器
     */
    fun loadImage(context: Context, url: String, imageView: ImageView) {
        val realUrl = if (url.startsWith(BaseConstant.DEFAULT_UPLOAD_SERVER)) {
            url
        } else {
            BaseConstant.DEFAULT_UPLOAD_SERVER + url
        }
        Glide.with(context).load(realUrl).centerCrop().into(imageView)
    }

    /**
     * 等比缩放图片
     * @author YangWei
     * @date 2019/3/15
     * @param context       上下文对象
     * @param url           图片资源 url
     * @param imageView     图片容器
     */
    fun loadImageFitCenter(context: Context, url: String, imageView: ImageView) {
        val realUrl = if (url.startsWith(BaseConstant.DEFAULT_UPLOAD_SERVER)) {
            url
        } else {
            BaseConstant.DEFAULT_UPLOAD_SERVER + url
        }
        Glide.with(context).load(realUrl).fitCenter().into(imageView)
    }

    /**
     * 当fragment或者activity失去焦点或者destroyed的时候，Glide会自动停止加载相关资源，确保资源不会被浪费
     * @author YangWei
     * @date 2019/3/15
     * @param context       上下文对象
     * @param url           图片资源 url
     * @param imageView     图片容器
     */
    fun loadUrlImage(context: Context, url: String, imageView: ImageView) {
        val realUrl = if (url.startsWith(BaseConstant.DEFAULT_UPLOAD_SERVER)) {
            url
        } else {
            BaseConstant.DEFAULT_UPLOAD_SERVER + url
        }
        Glide.with(context).load(realUrl).placeholder(R.drawable.xinjiananjian_icon_add).error(R.drawable.nav_icon_back)
            .centerCrop()
            .into(
                object : SimpleTarget<GlideDrawable>() {
                    override fun onResourceReady(
                        resource: GlideDrawable,
                        glideAnimation: GlideAnimation<in GlideDrawable>
                    ) {
                        imageView.setImageDrawable(resource)
                    }
                })
    }
}
